package com.own.business.sync.trigger.base.aop;

import com.own.business.sync.trigger.base.common.TypeConstantEnum;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * SyncTriggerAop
 *
 * @author chenxueli
 * @date 2024-01-08 16:16:00
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface SyncTriggerAop {

    /**
     * 源数据id
     */
    long targetId() default -1L;

    /**
     * 源数据id 支持spel表达式
     */
    String targetIdSpel() default "";

    /**
     * 操作类型 1=插入 2=修改 3=删除
     */
    TypeConstantEnum type();

    /**
     * 操作模块
     */
    String moduleName();

    /**
     * 旧状态（spel优先级更高）
     */
    int oldStatus() default -1;

    /**
     * 新状态（spel优先级更高）
     */
    int newStatus() default -1;

    /**
     * 旧状态 支持spel表达式
     */
    String oldStatusSpel() default "";

    /**
     * 新状态 支持spel表达式
     */
    String newStatusSpel() default "";

}
